package main

import (
	"errors"
	"fmt"
	"os"
)

const rows, columns = 9, 9

// Grid is a Sudoku grid
type Grid [rows][columns]int8

// Set a digit on a Sudoku grid
func (g *Grid) Set(row, column int, digit int8) error {
	// 越界了
	if !inBounds(row, column) {
		return errors.New("out of bounds")
	}

	g[row][column] = digit
	return nil
}

// 判断是否在边界内
func inBounds(row, column int) bool {
	if row >= 0 && row < rows && column >= 0 && column < columns {
		return true
	}
	return false
}

// New error
func main() {
	var g Grid
	// 将指定位置 改为 5
	err := g.Set(0, 0, 5)
	if err != nil {
		fmt.Printf("An error occurred: %v.\n", err)
		os.Exit(1)
	}
	fmt.Println(g)
}
